# frozen_string_literal: true

module Reports::UsersByTrustLevel
  extend ActiveSupport::Concern

  class_methods do
    def report_users_by_trust_level(report)
      report.data = []

      report.modes = [Report::MODES[:table]]

      report.dates_filtering = false

      report.labels = [
        { property: :key, title: I18n.t("reports.users_by_trust_level.labels.level") },
        { property: :y, type: :number, title: I18n.t("reports.default.labels.count") },
      ]

      User
        .real
        .group("trust_level")
        .count
        .sort
        .each do |level, count|
          key = TrustLevel.levels.key(level.to_i)
          url = Proc.new { |k| "/admin/users/list/#{k}" }
          report.data << { url: url.call(key), key: key, x: level.to_i, y: count }
        end
    end
  end
end
